package com.hlkj.pay.vo.merchant.req.info;

import java.util.List;
import java.util.stream.Collectors;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;

import com.hlkj.framework.common.util.json.JsonUtils;
import com.hlkj.pay.dto.merchant.ProviderChannelFeeConfigList;
import com.hlkj.pay.enums.CommonEnum;
import com.hlkj.pay.vo.BaseReq;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

/**
* 服务商支付方式费率配置信息
* @TableName t_provider_channel_fee_config
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class MerchantFeeConfigReq extends BaseReq {
    /**
    * 服务商编码
    */
    @NotBlank(message="[商户号]不能为空")
    @Schema(description = "商户号")
    private String sn;
  
    /**
     * 通道编码
     */
    @Size(min= 1,message="服务商费率配置 必须要有一个")
    @Schema(description = "服务商费率配置")
    @Valid
    private List<ProviderChannelFeeConfigList> providerChannelFeeConfigList;
    public static void main(String[] args) {
        String json="{\"sn\":\"586926002\",\"providerChannelFeeConfigList\":[{\"payWayCode\":\"onWechatApp\",\"payWayDO\":null,\"status\":0,\"applyType\":1,\"defaultFeeConfigValue\":{\"feeType\":1,\"rateBase\":1,\"fixedRate\":0},\"stepFeeType\":0,\"stepFeeConfigs\":[{\"startAmt\":0,\"endAmt\":1000,\"rateBase\":0},{\"startAmt\":1001,\"endAmt\":2000,\"rateBase\":0}],\"seniorFeeType\":0,\"seniorFeeConfigValue\":{\"providerMinFee\":0,\"providerMaxFee\":0}},{\"payWayCode\":\"onWechatPub\",\"payWayDO\":null,\"status\":1,\"applyType\":1,\"defaultFeeConfigValue\":{\"feeType\":1,\"rateBase\":1,\"fixedRate\":0},\"stepFeeType\":0,\"stepFeeConfigs\":[{\"startAmt\":0,\"endAmt\":1000,\"rateBase\":0},{\"startAmt\":1001,\"endAmt\":2000,\"rateBase\":0}],\"seniorFeeType\":0,\"seniorFeeConfigValue\":{\"providerMinFee\":0,\"providerMaxFee\":0}},{\"payWayCode\":\"onWechatScan\",\"payWayDO\":null,\"status\":0,\"applyType\":1,\"defaultFeeConfigValue\":{\"feeType\":1,\"rateBase\":0,\"fixedRate\":0},\"stepFeeType\":1,\"stepFeeConfigs\":[{\"startAmt\":0,\"endAmt\":1000,\"rateBase\":0},{\"startAmt\":1001,\"endAmt\":2000,\"rateBase\":0}],\"seniorFeeType\":1,\"seniorFeeConfigValue\":{\"providerMinFee\":0,\"providerMaxFee\":0}},{\"payWayCode\":\"onWechatLiteH5\",\"payWayDO\":null,\"status\":0,\"applyType\":1,\"defaultFeeConfigValue\":{\"feeType\":1,\"rateBase\":0,\"fixedRate\":0},\"stepFeeType\":1,\"stepFeeConfigs\":[{\"startAmt\":0,\"endAmt\":1000,\"rateBase\":0},{\"startAmt\":1001,\"endAmt\":2000,\"rateBase\":0}],\"seniorFeeType\":1,\"seniorFeeConfigValue\":{\"providerMinFee\":0,\"providerMaxFee\":0}},{\"payWayCode\":\"onWechatLite\",\"payWayDO\":null,\"status\":0,\"applyType\":1,\"defaultFeeConfigValue\":{\"feeType\":1,\"rateBase\":0,\"fixedRate\":0},\"stepFeeType\":0,\"stepFeeConfigs\":[{\"startAmt\":0,\"endAmt\":1000,\"rateBase\":0},{\"startAmt\":1001,\"endAmt\":2000,\"rateBase\":0}],\"seniorFeeType\":1,\"seniorFeeConfigValue\":{\"providerMinFee\":0,\"providerMaxFee\":0}},{\"payWayCode\":\"onWechatWap\",\"payWayDO\":null,\"status\":0,\"applyType\":0,\"defaultFeeConfigValue\":{\"feeType\":1,\"rateBase\":0,\"fixedRate\":0},\"stepFeeType\":0,\"stepFeeConfigs\":[{\"startAmt\":0,\"endAmt\":1000,\"rateBase\":0},{\"startAmt\":1001,\"endAmt\":2000,\"rateBase\":0}],\"seniorFeeType\":0,\"seniorFeeConfigValue\":{\"providerMinFee\":0,\"providerMaxFee\":0}},{\"payWayCode\":\"onAlipayPub\",\"payWayDO\":null,\"status\":0,\"applyType\":1,\"defaultFeeConfigValue\":{\"feeType\":1,\"rateBase\":0,\"fixedRate\":0},\"stepFeeType\":1,\"stepFeeConfigs\":[{\"startAmt\":0,\"endAmt\":1000,\"rateBase\":0},{\"startAmt\":1001,\"endAmt\":2000,\"rateBase\":0}],\"seniorFeeType\":1,\"seniorFeeConfigValue\":{\"providerMinFee\":0,\"providerMaxFee\":0}},{\"payWayCode\":\"onAlipayApp\",\"payWayDO\":null,\"status\":0,\"applyType\":0,\"defaultFeeConfigValue\":{\"feeType\":1,\"rateBase\":0,\"fixedRate\":0},\"stepFeeType\":0,\"stepFeeConfigs\":[{\"startAmt\":0,\"endAmt\":1000,\"rateBase\":0},{\"startAmt\":1001,\"endAmt\":2000,\"rateBase\":0}],\"seniorFeeType\":0,\"seniorFeeConfigValue\":{\"providerMinFee\":0,\"providerMaxFee\":0}},{\"payWayCode\":\"onAlipayWap\",\"payWayDO\":null,\"status\":0,\"applyType\":1,\"defaultFeeConfigValue\":{\"feeType\":1,\"rateBase\":0,\"fixedRate\":0},\"stepFeeType\":1,\"stepFeeConfigs\":[{\"startAmt\":0,\"endAmt\":1000,\"rateBase\":0},{\"startAmt\":1001,\"endAmt\":2000,\"rateBase\":0}],\"seniorFeeType\":1,\"seniorFeeConfigValue\":{\"providerMinFee\":0,\"providerMaxFee\":0}},{\"payWayCode\":\"onAlipayPc\",\"payWayDO\":null,\"status\":0,\"applyType\":1,\"defaultFeeConfigValue\":{\"feeType\":1,\"rateBase\":0,\"fixedRate\":0},\"stepFeeType\":1,\"stepFeeConfigs\":[{\"startAmt\":0,\"endAmt\":1000,\"rateBase\":0},{\"startAmt\":1001,\"endAmt\":2000,\"rateBase\":0}],\"seniorFeeType\":1,\"seniorFeeConfigValue\":{\"providerMinFee\":0,\"providerMaxFee\":0}},{\"payWayCode\":\"onAlipayLite\",\"payWayDO\":null,\"status\":0,\"applyType\":1,\"defaultFeeConfigValue\":{\"feeType\":1,\"rateBase\":0,\"fixedRate\":0},\"stepFeeType\":1,\"stepFeeConfigs\":[{\"startAmt\":0,\"endAmt\":1000,\"rateBase\":0},{\"startAmt\":1001,\"endAmt\":2000,\"rateBase\":0}],\"seniorFeeType\":1,\"seniorFeeConfigValue\":{\"providerMinFee\":0,\"providerMaxFee\":0}},{\"payWayCode\":\"onAlipayQr\",\"payWayDO\":null,\"status\":0,\"applyType\":1,\"defaultFeeConfigValue\":{\"feeType\":1,\"rateBase\":0,\"fixedRate\":0},\"stepFeeType\":0,\"stepFeeConfigs\":[{\"startAmt\":0,\"endAmt\":1000,\"rateBase\":0},{\"startAmt\":1001,\"endAmt\":2000,\"rateBase\":0}],\"seniorFeeType\":0,\"seniorFeeConfigValue\":{\"providerMinFee\":0,\"providerMaxFee\":0}},{\"payWayCode\":\"unionPayDirect\",\"payWayDO\":null,\"status\":0,\"applyType\":1,\"defaultFeeConfigValue\":{\"feeType\":1,\"rateBase\":0,\"fixedRate\":0},\"stepFeeType\":1,\"stepFeeConfigs\":[{\"startAmt\":0,\"endAmt\":1000,\"rateBase\":0},{\"startAmt\":1001,\"endAmt\":2000,\"rateBase\":0}],\"seniorFeeType\":1,\"seniorFeeConfigValue\":{\"providerMinFee\":0,\"providerMaxFee\":0}},{\"payWayCode\":\"transfer\",\"payWayDO\":null,\"status\":0,\"applyType\":1,\"defaultFeeConfigValue\":{\"feeType\":1,\"rateBase\":0,\"fixedRate\":0},\"stepFeeType\":1,\"stepFeeConfigs\":[{\"startAmt\":0,\"endAmt\":1000,\"rateBase\":0},{\"startAmt\":1001,\"endAmt\":2000,\"rateBase\":0}],\"seniorFeeType\":1,\"seniorFeeConfigValue\":{\"providerMinFee\":0,\"providerMaxFee\":0}},{\"payWayCode\":\"quickPay\",\"payWayDO\":null,\"status\":0,\"applyType\":1,\"defaultFeeConfigValue\":{\"feeType\":1,\"rateBase\":0,\"fixedRate\":0},\"stepFeeType\":1,\"stepFeeConfigs\":[{\"startAmt\":0,\"endAmt\":1000,\"rateBase\":0},{\"startAmt\":1001,\"endAmt\":2000,\"rateBase\":0}],\"seniorFeeType\":1,\"seniorFeeConfigValue\":{\"providerMinFee\":0,\"providerMaxFee\":0}},{\"payWayCode\":\"rtacc\",\"payWayDO\":null,\"status\":0,\"applyType\":1,\"defaultFeeConfigValue\":{\"feeType\":1,\"rateBase\":0,\"fixedRate\":0},\"stepFeeType\":1,\"stepFeeConfigs\":[{\"startAmt\":0,\"endAmt\":1000,\"rateBase\":0},{\"startAmt\":1001,\"endAmt\":2000,\"rateBase\":0}],\"seniorFeeType\":1,\"seniorFeeConfigValue\":{\"providerMinFee\":0,\"providerMaxFee\":0}},{\"payWayCode\":\"d1acc\",\"payWayDO\":null,\"status\":0,\"applyType\":1,\"defaultFeeConfigValue\":{\"feeType\":1,\"rateBase\":0,\"fixedRate\":0},\"stepFeeType\":1,\"stepFeeConfigs\":[{\"startAmt\":0,\"endAmt\":1000,\"rateBase\":0},{\"startAmt\":1001,\"endAmt\":2000,\"rateBase\":0}],\"seniorFeeType\":1,\"seniorFeeConfigValue\":{\"providerMinFee\":0,\"providerMaxFee\":0}},{\"payWayCode\":\"offAlipayScan\",\"payWayDO\":null,\"status\":0,\"applyType\":1,\"defaultFeeConfigValue\":{\"feeType\":1,\"rateBase\":0,\"fixedRate\":0},\"stepFeeType\":1,\"stepFeeConfigs\":[{\"startAmt\":0,\"endAmt\":1000,\"rateBase\":0},{\"startAmt\":1001,\"endAmt\":2000,\"rateBase\":0}],\"seniorFeeType\":1,\"seniorFeeConfigValue\":{\"providerMinFee\":0,\"providerMaxFee\":0}},{\"payWayCode\":\"onWechatQr\",\"payWayDO\":null,\"status\":0,\"applyType\":1,\"defaultFeeConfigValue\":{\"feeType\":1,\"rateBase\":0,\"fixedRate\":0},\"stepFeeType\":0,\"stepFeeConfigs\":[{\"startAmt\":0,\"endAmt\":1000,\"rateBase\":0},{\"startAmt\":1001,\"endAmt\":2000,\"rateBase\":0}],\"seniorFeeType\":0,\"seniorFeeConfigValue\":{\"providerMinFee\":0,\"providerMaxFee\":0}},{\"payWayCode\":\"offAlipayLiteH5\",\"payWayDO\":null,\"status\":0,\"applyType\":1,\"defaultFeeConfigValue\":{\"feeType\":1,\"rateBase\":0,\"fixedRate\":0},\"stepFeeType\":1,\"stepFeeConfigs\":[{\"startAmt\":0,\"endAmt\":1000,\"rateBase\":0},{\"startAmt\":1001,\"endAmt\":2000,\"rateBase\":0}],\"seniorFeeType\":1,\"seniorFeeConfigValue\":{\"providerMinFee\":0,\"providerMaxFee\":0}},{\"payWayCode\":\"offUnionQr\",\"payWayDO\":null,\"status\":0,\"applyType\":1,\"defaultFeeConfigValue\":{\"feeType\":1,\"rateBase\":0,\"fixedRate\":0},\"stepFeeType\":1,\"stepFeeConfigs\":[{\"startAmt\":0,\"endAmt\":1000,\"rateBase\":0},{\"startAmt\":1001,\"endAmt\":2000,\"rateBase\":0}],\"seniorFeeType\":1,\"seniorFeeConfigValue\":{\"providerMinFee\":0,\"providerMaxFee\":0}}]}";
        
        MerchantFeeConfigReq merchantFeeConfigReq= JsonUtils.parseObject(json,MerchantFeeConfigReq.class);
        List<ProviderChannelFeeConfigList> collect = merchantFeeConfigReq.getProviderChannelFeeConfigList().stream()
                .filter(providerChannelFeeConfigList -> CommonEnum.YES_NO_TYPE.YES.getCode()
                        .equals(providerChannelFeeConfigList.getStatus())).collect(Collectors.toList());
        merchantFeeConfigReq.setProviderChannelFeeConfigList(collect);
        System.out.println(JsonUtils.toJsonString(merchantFeeConfigReq));
    }

}
